package wangwenjun.phase2.concurrencypattern.activeobject.staticproxy.framework;

import wangwenjun.phase2.concurrencypattern.activeobject.staticproxy.OrderService;

import java.util.Map;

/**
 * @author ChangLiang
 * @date 2020/6/17
 */
abstract class OrderServiceMessage {

    /**
     * 该对象就是典型的Pipeline模型中的Product
     * 附有使用说明书的半成品，等待流水线工人的加工
     * execute 方法则是加工该产品的说明书。
     */

    /**
     * 用于收集方法参敛， 如果又返回Future 类型则一并收集
     */
    protected final Map<String, Object> params;

    /**
     * orderService 是具体的接口实现
     * 每一个方法都会被拆分成不同的Message
     */
    protected final OrderService orderService;

    public OrderServiceMessage(Map<String, Object> params, OrderService orderService) {
        this.params = params;
        this.orderService = orderService;
    }

    public abstract void execute();
}
